import axios from 'axios'
import store from '@/store'
const instance = axios.create({
  // 根路径
  baseURL: 'http://toutiao.itheima.net',
  // 设置超时时间
  timeout: 5000
})

// 添加请求拦截器
instance.interceptors.request.use(
  function (config) {
    // 在发送请求之前做些什么
    const token = store.state.user.token.token
    if (token) {
      config.headers.Authorization = 'Bearer ' + token
    }
    return config
  },
  function (error) {
    // 对请求错误做些什么
    return Promise.reject(error)
  }
)

// 添加响应拦截器
instance.interceptors.response.use(
  function (response) {
    // 2xx 范围内的状态码都会触发该函数。
    // 对响应数据做点什么
    // console.log(response)

    return response.data
  },
  function (error) {
    // 超出 2xx 范围的状态码都会触发该函数。
    // 对响应错误做点什么
    // console.log(error)
    console.log(error)
    return Promise.reject(error)
  }
)

// 添加响应拦截器
// instance.interceptors.response.use(
//   function (response) {
//     // 对响应数据做点什么 ==> 响应成功的，有获取到结果（响应结果就是response）
//     // console.log('响应拦截器 response', response)
//     // 这样，我们await等待得到的结果，就可以少写data
//     return response.data
//   },
//   function (error) {
//     // 对响应错误做点什么
//     // console.dir(error) // error错误对象

//     if (error.response.status === 401) {
//       // 身份认证失败，既token过期问题
//       // 跳转操作

//       // console.log('currentRoute', router.currentRoute)

//       router.push({
//         path: '/login',
//         query: {
//           // 带上回来的地址
//           //  问题：在vue组件中，通过 this.$route.fullPath 可以获取到当前路由地址
//           //   在js模块中，无法通过this.$route.fullPath 来获取
//           //   this.$route 当前路由信息 等价于  router.currentRoute
//           back: router.currentRoute.fullPath
//         }
//       })
//     }

//     return Promise.reject(error)
//   }
// )
export default instance
